#ifndef __C_CONFIG_H__
#define __C_CONFIG_H__

#ifdef __cplusplus
extern "C" {
#endif

// TEST_DBG_WIN32 means the test code in win32 platform
// this is only for test, not a part of the platform
// supported by this OS

#ifdef TEST_DBG_WIN32
#include "windows.h"
#endif

// VISKRNL_DBG means the kernel debug has been enabled
#define VISKRNL_DBG

// DBG_LEVEL is a value ranging from 1 to 3
// the bigger the value is, the more detail
// information viskrnl will output
// Level 1: critical error information
// Level 2: critical and prioritized info
// Level 3: all debug information
#define DBG_LEVEL1		(1)
#define DBG_LEVEL2		(2)
#define DBG_LEVEL3		(3)
#define DBG_LEVEL		(DBG_LEVEL3)

// version info
#include "./../buildver.h"

// use VIEWS_SMP_ENABLED to enable SMP support
// #define VIEWS_SMP_ENABLED

// how many CPUs are there enabled in this system
#define NR_CPUS			(1)

// define the system tick frequency
#define HZ				(100)

// define the minimum size of kernel default heap
// the size is in megabyte
#define MIN_KRNL_DEFAULT_HEAP_SZ	(8)

// define the maximum size of kernel default heap
// the size is in megabyte
#define MAX_KRNL_DEFAULT_HEAP_SZ	(256)

// here is for kmem_cache
// how many items shall cache_cache slab have
#define MAX_ITEM_OF_CACHE_CACHE		(96)

// define max tasks that could be created
#define MAX_TASKS					(4096)

// define max threads that could be created
#define MAX_THREADS					(32768)

// define the pages used for dentry hash table
#define DENTRY_HASH_MAX_PAGES		(8)

// define kernel stack pages
#define KRNL_THREAD_STACK_PAGES		(2)

// supported kernel device driver
#ifndef TEST_DBG_WIN32
#define DEV_IDE_ATA_ENABLED			(1)
#endif

#ifdef __cplusplus
}
#endif
#endif
/* EOF */

